package data;
import java.util.*;


/**
 * @author Administrator
 *
 */
public class ItemData extends Data{
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	ArrayList<ItemRecord> itemList=new ArrayList<ItemRecord>();
	
	
	/**
	 * 
	 */
	public ItemData(){
		
	}
	
	
	/**
	 * @param ID
	 * @return ItemRecord
	 */
	public ItemRecord getItemByID(String ID) {
		for(int i=0;i<itemList.size();i++){
			ItemRecord item=itemList.get(i);
			if(item.getID().equals(ID))
				return item;
		}
		return null;
	}
	
	
	/**
	 * @param ID
	 * @return String
	 */
	public String getItemInfoByID(String ID){
		String info=this.getItemByID(ID).getItemInfo();
		return info;
	}
	
	
	/**
	 * @param item
	 */
	public void addItem(ItemRecord item){
		String ID=item.getID();
		ItemRecord itemRecord=this.getItemByID(ID);
		if(itemRecord==null){
			itemList.add(item);
		}
		else{
			itemRecord.setNum(itemRecord.getNum()+item.getNum());
			itemRecord.calculateTotalPrice();
		}
	}
	
	
	/**
	 * @param ID
	 * @return boolean
	 */
	public boolean removeItem(String ID){
		ItemRecord item=this.getItemByID(ID);
		if(item==null){
			return false;
		}
		else{
			itemList.remove(item);
			return true;
		}
    }
    
    
    /**
     * @param ID
     * @param num
     * @return boolean
     */
    public boolean removeItem(String ID,String num){
    	try{
        	ItemRecord item=this.getItemByID(ID);
        	if(item==null){
        		return false;
        	}
        	int number=Integer.parseInt(num);
        	number=item.getNum()-number;
        	if(number<0){
        		return false;
        	}
        	if(number==0){
        		this.removeItem(item);
        	}
        	else{
        		item.setNum(number);
        		item.calculateTotalPrice();
        	}
        	return true;
        	
    	}catch(NumberFormatException e){
    		e.printStackTrace();
    		return false;
    	}
    }
    
    
    /**
     * @param item
     * @return boolean
     */
    public boolean removeItem(ItemRecord item){
    	return itemList.remove(item);
    }
    
    
    /**
     * @return boolean
     */
    public boolean hasItem(){
    	return itemList.size()!=0;
    }
    
    
    /**
     * @return double
     */
    public double getTotalPrice(){
    	double price=0;
    	for(int i=0;i<itemList.size();i++){
    		ItemRecord item=itemList.get(i);
    		item.calculateTotalPrice();
    		price+=item.getTotalPrice();
    	}
    	return price;
    }
    
    
    /**
     * @return ArrayList<String>
     */
    public ArrayList<String> getItemListInfo(){
    	ArrayList<String> item_list_info=new ArrayList<String>();
    	for(int i=0;i<itemList.size();i++){
    		ItemRecord item=itemList.get(i);
    		item_list_info.add(item.getItemInfo());
    	}
    	return item_list_info;
    }   
    
    
    /**
     * @return ArrayList<String>
     */
    public ArrayList<String> getItemListStoreInfo(){
    	ArrayList<String> item_list_info=new ArrayList<String>();
    	for(int i=0;i<itemList.size();i++){
    		ItemRecord item=itemList.get(i);
    		item_list_info.add(item.getStoreInfo());
    	}
    	return item_list_info;
    }
    
    
    /**
     * @return ArrayList<String>
     */
    public ArrayList<String> getItemListSaleInfo(){
    	ArrayList<String> item_list_info=new ArrayList<String>();
    	for(int i=0;i<itemList.size();i++){
    		ItemRecord item=itemList.get(i);
    		item_list_info.add(item.getSaleInfo());
    	}
    	return item_list_info;
    }
    
    
    /**
     * @return ArrayList<String>
     */
    public ArrayList<String> getGiftListInfo(){
    	ArrayList<String> item_list_info=new ArrayList<String>();
    	for(int i=0;i<itemList.size();i++){
    		ItemRecord item=itemList.get(i);
    		item_list_info.add(item.getGiftInfo());
    	}
    	return item_list_info;
    }
}
